import { post, postWithQueryParams } from "@/api/request";

/**
 * 文档目录管理控制器 / 文档目录管理控制器删除附件目录
 * @param {object} params
 * @param {object} data
 * @param {number} params.id id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<boolean>}
 * @author 肖玮
 */
export function managementAttachmentDirectoryDelete(params, data, config) {
  return postWithQueryParams("/management/attachmentDirectory/delete", params, data, config);
}

/**
 * 文档目录管理控制器 / 文档目录管理控制器移动附件目录
 * @param {object} data
 * @param {number} [data.sourceId] 下移目录id
 * @param {number} [data.targetId] 被交换目录id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<boolean>}
 * @author 肖玮
 */
export function managementAttachmentDirectoryMove(data, config) {
  return post("/management/attachmentDirectory/move", data, config);
}

/**
 * 文档目录管理控制器 / 文档目录管理控制器新增附件目录
 * @param {object} data
 * @param {string} [data.directoryName] 目录名称
 * @param {boolean} [data.isFixed] 是否是固定节点(false:否, true:是)
 * @param {number} [data.parentId] 上级目录, 根目录为0
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<查询文档信息树列表显示实体>}
 * @author 肖玮
 */
export function managementAttachmentDirectorySave(data, config) {
  return post("/management/attachmentDirectory/save", data, config);
}

/**
 * 文档目录管理控制器 / 文档目录管理控制器查询附件目录树列表
 * @param {object} data
 * @param {string} [data.directoryName] 目录名称
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<查询文档信息树列表显示实体>>}
 * @author 肖玮
 */
export function managementAttachmentDirectoryTreeList(data, config) {
  return post("/management/attachmentDirectory/treeList", data, config);
}

/**
 * 文档目录管理控制器 / 文档目录管理控制器修改附件目录
 * @param {object} data
 * @param {string} [data.directoryName] 目录名称
 * @param {number} [data.id] 主键id
 * @param {boolean} [data.isFixed] 是否是固定节点(false:否, true:是)
 * @param {number} [data.parentId] 上级目录
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<boolean>}
 * @author 肖玮
 */
export function managementAttachmentDirectoryUpdate(data, config) {
  return post("/management/attachmentDirectory/update", data, config);
}

/**
 * 文档目录管理控制器 / 文档目录管理控制器修改排序
 * @param {object} params
 * @param {object} data
 * @param {array<number>} params.idList 重新排序过的菜单id列表
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<查询文档信息树列表显示实体>>}
 * @author 肖玮
 */
export function managementAttachmentDirectoryUpdateSort(params, data, config) {
  return postWithQueryParams("/management/attachmentDirectory/updateSort", params, data, config);
}

/**
 * @typedef {object} 查询文档信息树列表显示实体 查询文档信息树列表显示实体
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {array<string>} directoryAuthEnumList 目录权限
 * @property {string} directoryName 目录名称
 * @property {boolean} hasFile 是否含有文件(false:否, true:是)
 * @property {number} id 主键id
 * @property {boolean} isFixed 是否是固定节点(false:否, true:是)
 * @property {number} parentId 上级目录id
 * @description 查询文档信息树列表显示实体
 */
